<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01</title>
</head>
<body>
<script>
    /*
     * 构造函数 + 原型
     * 共享的内容写在prototype中,独有的属性通过构造方法指定
     * 最常用的构建对象的模式：既能够灵活的定义属性，也不会包含重复的方法
     * 同时支持instanceof类型判断
     *
     */
    function Animal(name) {
        this.name = name;
        this.friends = ["dog","cat"];
    }

    Animal.prototype.sayName = function () {
            alert(this.name);
        }
    }

    var a1 = new Animal();
    var a2 = new Animal();
    alert(a1.sayName == a2.sayName); //true
    a1.sayName();

    alert(Animal.prototype.constructor == Animal); //true

    a1.friends.push("snake");
    alert(a2.friends); //["dog","cat"]
</script>
</body>
</html>